﻿using System.Collections.Generic;
using System.Linq;
using UnityEditor;

namespace HKTools
{
    public class HK_TMPDefineSetting : AssetPostprocessor
    {
        static string define = "TMPIMPORT";

        static void OnPostprocessAllAssets(
          string[] importedAssets,
          string[] deletedAssets,
          string[] movedAssets,
          string[] movedFromAssetPaths)
        {
            // 尝试获取 TextMeshPro 类型
            var tmpType = System.Type.GetType("TMPro.TextMeshPro, Unity.TextMeshPro");

            if (tmpType != null)
            {
                // 如果 TextMeshPro 存在且 TMPIMPORT 符号未定义，则添加
                AddTmpDefine();
            }
            else
            {
                // 如果 TextMeshPro 不存在且 TMPIMPORT 符号已定义，则移除
                RemoveTmpDefine();
            }
        }

        // 添加自定义编译符号
        static void AddTmpDefine()
        {
            // 获取当前的编译符号
            var defines = GetCurrentDefines();

            if (!defines.Contains(define))
            {
                defines.Add(define);
                SetCurrentDefines(defines);
            }
        }

        // 移除自定义编译符号
        static void RemoveTmpDefine()
        {
            var defines = GetCurrentDefines();

            if (defines.Contains(define))
            {
                defines.Remove(define);
                SetCurrentDefines(defines);
            }
        }

        // 获取当前的编译符号列表
        static List<string> GetCurrentDefines()
        {
            string definesString = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup);
            return string.IsNullOrEmpty(definesString)
                ? new List<string>()
                : definesString.Split(';').ToList();
        }

        // 设置当前的编译符号列表
        static void SetCurrentDefines(List<string> defines)
        {
            string definesString = string.Join(";", defines);
            PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup, definesString);
        }
    }
}